package main


/*
### 提取ip相关信息

- 接口：https://ip.taobao.com/outGetIpInfo?accessKey=alibaba-inc&ip=要查询的ip地址
- 给一个ip地址，可以通过该接口获取到省份和运营商
- 实现一个ip查询功能
  - 用户输入一个ip地址，将查询到的结果显示给用户
  - 并将结果用以下格式写入到文件：ip,国家,省份,运营商
*/

import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

type IPInfo struct {
	Country    string `json:"country"`
	RegionName  string `json:"regionName"`
	City       string `json:"city"`
	ISP        string `json:"isp"`
	QueryIp       string `json:"query"`
}


// OnlineIpInfo 通过ip-api.com接口查询IP信息
// 返回：IP地址的信息（格式：字符串的json）
func OnlineIpInfo(ip string) *IPInfo {
	url := "http://ip-api.com/json/"+ip+"?lang=zh-CN"
	resp, err := http.Get(url)
	if err != nil {
		return nil
	}
	defer resp.Body.Close()

	out, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil
	}
	var result IPInfo
	if err := json.Unmarshal(out, &result); err != nil {
		return nil
	}
	return &result
}


func main() {
	var ip string
	fmt.Println("请输入ip地址:")
	fmt.Scanln(&ip)
	result := OnlineIpInfo(ip)
	if result != nil {
		fmt.Println("查询的ip是: ", result.QueryIp)
		fmt.Println("国家：", result.Country)
		fmt.Println("省份：", result.RegionName)
		fmt.Println("城市：", result.City)
		fmt.Println("运营商：", result.ISP)
	}
}

